package com.ssy.lingxi.marketing.service.feign;

import com.ssy.lingxi.common.model.dto.MemberAndRoleIdDTO;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.member.merchant.api.model.vo.inner.request.*;
import com.ssy.lingxi.member.merchant.api.model.vo.inner.response.*;

import java.util.List;
import java.util.Map;

/**
 * 会员内部接口
 * @author yzc
 * @version 2.0.0
 * @date 2021/7/19
 */
public interface IMemberFeignService {

    /**
     * 根据会员Id、角色Id查询平台会员信息
     * <p>其中等级为当前会员的平台等级</p>
     * @param memberFeignVOList 接口参数
     * @return 查询结果
     **/
    Wrapper<List<MemberFeignQueryVO>> listPlatformMembers(List<MemberFeignVO> memberFeignVOList);

    /**
     * 根据会员Id和角色Id，查询下属“服务消费者”角色的会员列表（不区分企业会员、渠道会员）
     * <p>其中等级为下级会员和角色在当前会员和角色下的等级</p>
     * @param feignVO 接口参数
     * @return 查询结果
     */
    Wrapper<List<MemberFeignQueryVO>> listLowerMembers(MemberFeignSubVO feignVO);

    /**
     * 根据memberLevelConfigId查询会员等级配置信息
     * @param memberLevelConfigId 接口参数
     * @return 返回结果
     */
    Wrapper<List<MemberFeignLevelConfigVO>> getMemberLevelConfigBatch(List<Long> memberLevelConfigId);

    /**
     * 能力中心 - 营销服务, 查询下级会员适用会员
     * @param memberAndUpperMembersVO 接口参数
     * @return 查询结果
     */
    Wrapper<List<AtSubMemberSuitableMemberVO>> listAbilitySubMemberSuitableMember(MemberAndUpperMembersVO memberAndUpperMembersVO);

    /**
     * 平台后台 - 营销服务, 查询下级会员适用会员
     * @param memberFeignVO 接口参数
     * @return 查询结果
     */
    Wrapper<PfSubMemberSuitableMemberVO> getPlatformSubMemberSuitableMember(MemberFeignVO memberFeignVO);

    /**
     * 查询下级会员的价格权益设置
     * @param relationVO
     * @return
     */
    Wrapper<MemberFeignRightVO> getMemberPriceRight(MemberFeignRelationVO relationVO);

    /**
     * 批量查询下级会员的价格权益
     * @param batchVO 接口参数
     * @return 查询结果
     */
    Wrapper<List<MemberFeignRightDetailVO>> batchMemberPriceRight(MemberFeignBatchVO batchVO);

    /**
     * 批量查询会员名称、logo
     * @param memberIds
     * @return
     */
    Wrapper<List<MemberFeignLogoVO>> getMemberLogos(List<Long> memberIds);

    /**
     * 批量查询会员权益.
     * @param memberId
     * @param roleId
     * @param upMemberLis
     * @return
     */
    Map<String,Double> getMemberPriceRight(Long memberId, Long roleId, List<MemberAndRoleIdDTO> upMemberLis);

    /**
     * 判断是否下级会员
     * @param feignVO
     * @return
     */
    Boolean isSubMember(MemberRelationFeignVO feignVO);

    /**
     * 查询审核通过的下属会员列表
     * @param feignVO
     * @return
     */
    Wrapper<List<MemberFeignQueryVO>> listAllLowerMembers(MemberFeignVO feignVO);
}
